package interfejsy.logika.logika_wlasciwa;


import interfejsy.logika.IWlasciciel;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import model.*;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Context;

public class Wlasciciel implements IWlasciciel {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
 int a=0;
 final Map numbers = Collections.unmodifiableMap(new HashMap(2, 1.0f){
         {
                 put("","");
         }
 });
 private int error=0;
 void a(Map<String, Object> mapa)
 {
         error=0;
         String b=String.valueOf(mapa.get("key"));
         int liczba=Integer.valueOf(b);
                 mma.putAll(
                                 liczba==1?((Pokoj)mapa.get("OBIEKT")).toString_():
                                 liczba==2?((Rezerwacje)mapa.get("OBIEKT")).toString_():
                                         liczba==3?((WSP)mapa.get("OBIEKT")).toString_():
                                 liczba==4?((Wyposarzenie)mapa.get("OBIEKT")).toString_():
                                 liczba==5?((Lokalizacje)mapa.get("OBIEKT")).toString_():
                                 liczba==6?((LUDKI)mapa.get("OBIEKT")).toString_():
                                         liczba==7?((Zom)mapa.get("OBIEKT")).toString_():
                                         numbers);
                 /*     try{
               if (mma.containsKey(""))
                         throw new NieprawidlowyArgumentWMapie("Brak Mapowania");
                 }
                 catch(NieprawidlowyArgumentWMapie e)
                 {
                         System.out.println("brak mapowania");error=1;
                 }*/
 }
 Map<String,String> mma=null;
 @Override
 public int operacja(Map<String, Object> mapa) {
         mma=new HashMap<String, String>();
         a(mapa);
         if ( mapa.containsKey("OPERACJA"))
                 mma.put("OPERACJA",String.valueOf(mapa.get("OPERACJA")));
         System.out.println("PRZZED JSON_");
         if( error==0)
         {
                 web(mma,params);
         if ( json!=null ) Wynik.json=json;
         //TTT=true;
         if ( !mma.containsKey("INFO") ) {
         try {
                 Thread.sleep(2500);
                 System.out.println("CZEKAJ _Base_");
         } catch (InterruptedException e) {
                 e.printStackTrace();
         }
 }
         a=1;
         System.out.println(Wynik.json);
         boolean dodano=false;
         a=-1;
         System.out.println("CZEKAJ po 3 sek wlasciciel a="+status());
         Wynik.parsuj();
         System.out.println("a>"+a);
         return 1;
         }
         else
         return -1;
 }
 @Override
 public int status() {
         return a;
 }
 void web( Map<String,String> mma,List<NameValuePair> params)
 {
         if(!mma.isEmpty())
     {
             for (Object key : mma.keySet())
                     params.add(new BasicNameValuePair(key.toString(),mma.get(key)));
     }
         json = jsonParser.makeHttpRequest(ADRES+mma.get("URL").toLowerCase()+".php","POST", params);
         
 }
 private static final String ADRES="http://opiekuj2.javaprovider.net/php/__";
 JSONObject json=null;
 JSONParser jsonParser = new JSONParser();
         @Override
         public int sprawdzaj_rezerwuj(Map<String, Object> mapa) {
                   Map<String,String> mma=new HashMap<String, String>();
        if ( mapa.containsKey("OPERACJA"))
                mma.put("OPERACJA",String.valueOf(mapa.get("OPERACJA")));
        
        if(mapa.containsKey("rezerwacja+"))
                    mma.putAll(((Rezerwacje)mapa.get("rezerwacja+")).toString_());
                    List<NameValuePair> params = new ArrayList<NameValuePair>();
        web(mma,params);
        if ( json!=null )
        {
                Wynik.json=json;
                json=null;
                Wynik.parsuj();
        }
                 return 0;
         }
}
